ggplot2: Basics

Bild von Allison Horst.

ggplot2: Das Paket


ggplot2 gehört zum tidyverse

#install.packages("tidyverse")
library(tidyverse)


… kann aber natürlich auch seperat geladen werden:

#install.packages("ggplot2")
library(ggplot2)

Erste Schritte.

Foto von Omar Lopez auf Unsplash

Komponenten

Übersicht

Daten vorstellen

pop_world <- read.csv(here::here("raw_data", "pop.csv"))
co2_world <- read.csv(here::here("raw_data", "co2_pcap_cons.csv"))

colnames(co2_world) <- gsub("^X", "", colnames(co2_world)) 
co2_world[, 2:ncol(co2_world)] <- co2_world[, 2:ncol(co2_world)] %>% 
  mutate(across(everything(), ~ gsub("−", "-", as.character(.)))) %>% 
mutate_if(is.character, as.numeric) 

co2_world <- co2_world %>% 
  pivot_longer(cols = -country, 
               names_to = "year", 
               values_to = "co2")

The Big picture

Start

ggplot()

Daten

ggplot(data = movies_metadat)

Aesthetic mapping

Um diese leere Leinwand zu befüllen, müssen wir die Daten mit den benötigten visuellen Eigenschaften verknüpfen:

mapping = aes()

Je nach Plot-Art sind verschiedene visuelle Eigenschaften möglich. Wichtig ist für uns jetzt erst einmal die Position, also x - und y-Achsen.
Es kann hier aber z.B. auch die Farbe der Punkte in Agnhängikeit von Kategorien in den Daten geändert werden.

Aesthetic mapping: Achsen

ggplot(data = movies_metadat, 
       mapping = aes(x = budget, 
                     y = vote_average))

Geometric Layers

ggplots sind aus verschiedenen Layern aufgebaut, die mithilfe eines + übereinander gelegt werden.

geom_

Layers

ggplot(data = movies_metadat, 
       mapping = aes(x = budget, 
                     y = vote_average)) +
  geom_point()

Mehr Layers!

ggplot(data = movies_metadat, 
       mapping = aes(x = budget, 
                     y = vote_average)) +
  geom_point() +
  geom_smooth()

Titel/Labels

ggplot(data = movies_metadat, 
       mapping = aes(x = budget, 
                     y = vote_average)) +
  geom_point() +
  geom_smooth() +
  labs(
    title = "Getting a bang for your buck: Are Movies with higher budget also better?",
    subtitle = "There doesn't seem to be a strong relation between movie budget and average rating.",
    x = "Movie budget",
    y = "Average vote"
  )

Style deinen Plot: Themes

ggplot(data = movies_metadat, 
       mapping = aes(x = budget, 
                     y = vote_average)) +
  geom_point() +
  geom_smooth() +
  labs(
    title = "Getting a bang for your buck: Are Movies with higher budget also better?",
    subtitle = "There doesn't seem to be a strong relation between movie budget and average rating.",
    x = "Movie budget",
    y = "Average vote"
  ) +
  theme_classic()

Übung

Erstelle ein eigenes Punktdiagramm. Nutze dafür andere Variablen im Datensatz movies_metadat. Vergib auch einen Titel, Achsen-Beschriftungen und suche ein Theme aus.

ggplot(data = movies_metadat, 
       mapping = aes(x = budget, 
                     y = vote_average)) +
  geom_point() +
  geom_smooth() +
  labs(
    title = "Getting a bang for your buck: Are Movies with higher budget also better?",
    subtitle = "There doesn't seem to be a strong relation between movie budget and average rating.",
    x = "Movie budget",
    y = "Average vote"
  ) +
  theme_classic()

Let’s take a deeper dive

Hier dann nochmal genauer durchgehen - Was haben wir eigentlich gemacht. Nicht zu sehr in den Basics verlieren, auch schneller tiefer reingehen (scales, coord system …)

Abspeichern

Farben

https://questionsindataviz.com/2023/12/29/what-makes-a-truly-terrible-map/